﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Xml;
//using System.Xml.XPath;
//using System.Xml.Xsl;
//using System.Diagnostics;

//namespace GenericLibrary.Xml.XPath {

//    public class IndexedXPathNodeIterator : XPathNodeIterator<IndexedXPathNodeIterator> {

//        private Dictionary<object, XPathNavigator> _nodeSet;

//        public XPathNavigator this[ object key ] {
//            get {
//                try {
//                    return this._nodeSet[ key ];
//                } catch( KeyNotFoundException ) {
//                    return null;
//                } catch( Exception ) {
//                    Debug.Assert( false );
//                    throw;
//                }
//            }
//        }

//        public IndexedXPathNodeIterator() { }

//        public IndexedXPathNodeIterator( XPathNodeIterator nodeSet, string keyExpression ) {
//            try {
//                this._nodeSet = new Dictionary<object, XPathNavigator>();
//                XPathExpression keyExpr = XPathExpression.Compile( keyExpression );
//                foreach( XPathNavigator node in nodeSet ) {
//                    this._nodeSet.Add( node.Evaluate( keyExpr ), node );
//                }
//            } catch( Exception ) {
//                Debug.Assert( false );
//                throw;
//            }
//        }

//        protected override IEnumerable<XPathNavigator> NodeSet {
//            get {
//                try {
//                    return this._nodeSet.Values;
//                } catch( Exception ) {
//                    Debug.Assert( false );
//                    throw;
//                }
//            }
//        }

//        protected override void CopyFrom( IndexedXPathNodeIterator source ) {
//            try {
//                this._nodeSet = source._nodeSet;
//            } catch( Exception ) {
//                Debug.Assert( false );
//                throw;
//            }
//        }
//    }

    
//}
